package cn.tedu.smartos.seniorcourse.service;

import cn.tedu.smartos.seniorcourse.pojo.dto.*;
import cn.tedu.smartos.seniorcourse.pojo.vo.CourseCategoryVO;
import cn.tedu.smartos.seniorcourse.pojo.vo.CourseLessonVO;
import cn.tedu.smartos.seniorcourse.pojo.vo.CourseVO;
import cn.tedu.smartos.seniorcourse.pojo.vo.LearningRecordVO;
import com.github.pagehelper.PageInfo;

import java.util.List;

public interface CourseService {
    // 获取所有课程列表
    PageInfo<CourseVO> list(Integer categoryId, Integer pageNum, Integer pageSize);
    // 获取课程详情
    CourseVO detail(Long courseId);
    // 添加课程
    void add(CourseAddParam courseAddParam);
    // 删除课程
    void delete(List<Long> courseIds);
    // 修改课程
    void update(CourseUpdateParam courseUpdateParam);

//————————————————————————————————————————————————————————————————————————————————————————

    // 获取所有课程分类列表
    PageInfo<CourseCategoryVO> listCategory(Integer pageNum, Integer pageSize);
    // 获取课程分类详情
    CourseCategoryVO detailCategory(Long categoryId);
    // 添加课程分类
    void addCategory(CourseCategoryAddParam courseCategoryAddParam);
    // 删除课程分类
    void deleteCategory(List<Long> categoryIds);

//—————————————————————————————————————————————————————————————————————————————————————————

    // 获取课程课时列表
    PageInfo<CourseLessonVO> listLessons(Long courseId, Integer pageNum, Integer pageSize);
    // 获取课程课时详情
    CourseLessonVO detailLesson(Long lessonId);
    // 添加课程课时
    void addLesson(CourseLessonAddParam courseLessonAddParam);
    // 删除课程课时
    void deleteLesson(List<Long> lessonIds);
    // 修改课程课时
    void updateLesson(CourseLessonUpdateParam courseLessonUpdateParam);

//————————————————————————————————————————————————————————————————————————————————————————

    // 添加学习记录
    void addRecord(LearningRecordAddParam learningRecordAddParam);
    // 学习记录列表
    PageInfo<LearningRecordVO> listRecords(Long elderlyUserId, Integer pageNum, Integer pageSize);
    // 学习记录详情
    LearningRecordVO detailRecord(Long recordId);
    // 删除学习记录
    void deleteRecord(List<Long> recordIds);
}
